High volumes of data are captured, stored, and available for use in various types of decision-making. However, it is often difficult or impossible for human users of such data to apply the data, and/or to engineer computers to operate based on the data and in a manner that optimizes use of the available data.
Computers are often used in various types of scheduling operations, and many such scheduling operations are straightforward, whether by computer or human implementation. In some contexts, however, it is difficult or impossible to make large-scale, accurate, and/or timely scheduling decisions, particularly when certain scheduling constraints exist (such as schedule conflicts), and/or when a large number of scheduling variables are present.
For example, it is difficult to assign available, finite resources among a number of users of those resources, particularly when the resources are only available at pre-determined times, and to pre-determined extents. In particular, potential users or other consumers of the resources are often also subject to their own availability constraints, which may also overlap or conflict with other users in terms of utilizing or accessing the resources. Further, users also may have strong needs or preferences to obtain some of the resources, while not desiring or needing (or wishing to avoid) other ones of the resources.
Consequently, even if it is possible to find a resource/user assignment(s), that satisfies the relevant resource constraints, the resulting assignment(s) may be very unsatisfactory to individual users who receive unwanted or unnecessary resources. Further, in some scenarios, there may be a wide disparity between some users who receive desired resources and are very satisfied, and other ones of the users who receive very few, if any, desired resources.